from devicetest.aw.OpenHarmony import CommonOH
from devicetest.core.test_case import TestCase, Step

from aw.common import common_setup, common_teardown
from aw.pom import Contact, Keyboard


# 依赖0200新建的联系人
class PreTest_RK3568_Communication_Contact_0300(TestCase, Contact):
    # 预置条件：
    # 烧写目标版本后，正常进入桌面-联系人应用，存在已保存的联系人
    # 测试步骤：
    # 1.联系人列表中点击联系人进入
    # 2.点击左下角☆标识
    # 3.退出联系人，切换到收藏界面并查看
    # 4、点击进入已收藏联系人详情页
    # 5、点击取消收藏
    # 预期结果：
    # 1.可以正常进入联系人应用内
    # 2.☆标识变为黑色，名称变为取消收藏
    # 3.正常切换收藏页面，收藏界面显示已收藏的联系人信息
    # 4、正常进入联系人详情页
    # 5、取消成功，按钮变为☆收藏按钮

    def __init__(self, controllers):
        self.TAG = self.__class__.__name__
        TestCase.__init__(self, self.TAG, controllers)

    def setup(self):
        common_setup(self.Phone1)

    def process(self):
        Step('步骤1.联系人列表中点击联系人进入')
        CommonOH.startAbility(self.Phone1, self.ability_name, self.bundle_name)
        CommonOH.wait(self.Phone1, 2)
        CommonOH.touchByText(self.Phone1, '联系人')
        CommonOH.touchByText(self.Phone1, self.test_name)
        Step('预期结果1.可以正常进入联系人应用内')
        CommonOH.checkIfTextExist(self.Phone1, '收藏')

        Step('步骤2.点击左下角☆标识')
        CommonOH.touchByText(self.Phone1, '收藏')
        Step('预期结果2.☆标识变为黑色，名称变为取消收藏')
        CommonOH.checkIfTextExist(self.Phone1, '取消收藏')

        Step('步骤3.退出联系人，切换到收藏界面并查看')
        CommonOH.goBack(self.Phone1)
        CommonOH.touchByText(self.Phone1, '收藏')
        Step('预期结果3.正常切换收藏页面，收藏界面显示已收藏的联系人信息')
        CommonOH.checkIfTextExist(self.Phone1, self.test_name)

        Step('步骤4、点击进入已收藏联系人详情页')
        CommonOH.click(self.Phone1, **self.detail_btn)
        Step('预期结果4、正常进入联系人详情页')
        CommonOH.checkIfTextExist(self.Phone1, '取消收藏')

        Step('步骤5、点击取消收藏')
        CommonOH.touchByText(self.Phone1, '取消收藏')
        Step('预期结果5、取消成功，按钮变为☆收藏按钮')
        CommonOH.checkIfTextExist(self.Phone1, '收藏')
        CommonOH.goBack(self.Phone1)
        CommonOH.checkIfTextExist(self.Phone1, self.test_name, expect=False)

    def teardown(self):
        common_teardown(self.Phone1, self.bundle_name)
